package middleware

import (
	"github.com/gin-gonic/gin"
	"gspeed/app/utils/response"
	"gspeed/bootstrap/global"
)

func RateLimit() gin.HandlerFunc {
	return func(c *gin.Context) {
		// TakeAvailable: 从令牌桶拿几个可用的令牌
		left := global.RateLimit.TakeAvailable(1)
		// Available：桶里可用令牌数

		/*fmt.Printf("拿到 %d 个token \n",left)
		fmt.Printf("剩余token %d \n",global.RateLimit.Available())*/

		if left <= 0 {
			// 如果拿令牌的时候，返回值小于等于0，说明没令牌了
			// response.Json.SetCode(dist.MessageRateLimit).Ok(c)
			response.Ok(c)
			c.Abort()
			return
		}
		c.Next()
	}
}
